package com.jt.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jt.mapper.ItemDescMapper;
import com.jt.pojo.Item;
import com.jt.pojo.ItemDesc;
import com.jt.service.ItemService;
import com.jt.vo.EasyUITable;
import org.apache.jasper.tagplugins.jstl.core.ForEach;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jt.mapper.ItemMapper;
import org.springframework.transaction.annotation.Transactional;

import java.util.Arrays;
import java.util.Date;
import java.util.List;

@Service
public class ItemServiceImpl implements ItemService {
	
	@Autowired
	private ItemMapper itemMapper;
	@Autowired
	private ItemDescMapper itemDescMapper;
	/**
	 * 业务说明：根据商品id，查询商品详细信息
	 */
	@Override
	public ItemDesc findItemDescById(Long itemId) {

		return itemDescMapper.selectById(itemId);
	}



	/** 设置上架/下架
	 *参数说明:  entity:修改数据的值   updateWrapper
	 */
	@Override
	public void updateStatus(Long[] ids, Integer status) {
		Item item = new Item();
		item.setStatus(status);
		//where id in (1,2,3,4)
		UpdateWrapper<Item> updateWrapper = new UpdateWrapper<>();
		updateWrapper.in("id",ids);
		itemMapper.update(item,updateWrapper);
	}


	/**
	 * 商品删除,删除商品信息的时候还得删除商品描述信息
	 * */

	@Override
	@Transactional
	public void deleteItems(Long[] ids) {
		//把数组转成集合
		List<Long> id = Arrays.asList(ids);
		//1、删除商品信息
		itemMapper.deleteBatchIds(id);
		//2、删除商品描述信息
		itemDescMapper.deleteBatchIds(id);
		//手写sql方式
//		itemMapper.deleteItems(ids);
	}

	/**
	 * 商品修改
	 * */
	@Override
	@Transactional
	public void updateItem(Item item,ItemDesc itemDesc) {
		//修改商品信息
		itemMapper.updateById(item);
		//修改商品描述信息
		Long itemId = item.getId();
		UpdateWrapper<ItemDesc> updateWrapper = new UpdateWrapper<>();
		updateWrapper.eq("item_id",itemId);
		itemDescMapper.update(itemDesc,updateWrapper);
	}

	/**
	 * 商品新增
	 * */
	@Override
	@Transactional
	public void saveItem(Item item, ItemDesc itemDesc) {
		//1、设置状态信息
		item.setStatus(1);
		//Mp用法：如果完成主键自增，则自动实现了数据的回显
		//2、新增商品
		itemMapper.insert(item);
		//获取id，并赋值给
		itemDesc.setItemId(item.getId());
		//3、新增商品描述
		itemDescMapper.insert(itemDesc);
		//用sql需要设置属性useGeneratedKeys="true"
	}

	/**
	 * 分页查询商品信息
	 * 	select * from item limit 起始位置（当前页数-1）*查询条数，查询条数
	 */
	@Override
	public EasyUITable findObjects(Integer page, Integer rows) {
		long total = itemMapper.selectCount(null);
		//1.手写分页
		int startIndex = (page - 1) * rows;
		List<Item> itemList = itemMapper.findItemByPage(startIndex,rows);

		//2、利用MP方式实现分页
//		IPage mpPage = new Page(page, rows);
//		QueryWrapper<Item> queryWrapper = new QueryWrapper<>();
//		queryWrapper.orderByDesc("update");
//		mpPage = itemMapper.selectPage(mpPage,queryWrapper);
//		long total = mpPage.getTotal();//获取记录总数
//		List<Item> itemList =mpPage.getRecords();//获取查询当前页

		return new EasyUITable(total, itemList);
	}



}
